     /*Linux中的管道示例*/
       #include <sys/wait.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>
       #include <string.h>

       int main(int argc, char *argv[])
       {
           int    pipe_fd[2];//管道的read end和write end
           pid_t child_pid;//子进程
           char   pipe_buf;//管道数据
           memset(pipe_fd, 0, sizeof(int)*2);//初始化

           if (pipe(pipe_fd) == -1) {/*通过pipe接口打开管道，pipe_fd[0]和pipe_fd[1]分别代
                            表读、写端*/
               /*出错处理*/
               return -1;
           }

           child_pid= fork(); //fork一个子进程
           if (child_pid == -1) {
           /*出错处理*/
           return -1;
           }

           if (child_pid == 0) {   /*子进程中的操作*/
               close(pipe_fd[1]); /*关闭写端，因为子进程负责读取*/
               while (read(pipe_fd[0], &pipe_buf, 1) > 0)/*从管道中读取一个char*/
                   write(STDOUT_FILENO, &pipe_buf, 1);/*读取成功，输出*/
               close(pipe_fd[0]); /*关闭读取端*/
               return 0; /*成功*/
           } else {  /*父进程中的操作*/
               close(pipe_fd[0]);  /*和子进程相对应，关闭读取端*/
               write(pipe_fd[1], "Hello", 5);/*写入一个字符“H”*/
               close(pipe_fd[1]);  /*关闭写入端*/
               wait(NULL);  /*等待子进程*/
               return 0;/*成功*/
           }
       }